home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume27 / dmake / part33 < prev    next >
Encoding:
Text File  |  1992-01-29  |  40.0 KB  |  1,368 lines

  1. Newsgroups: comp.sources.misc
  2. From: dvadura@plg.waterloo.edu (Dennis Vadura)
  3. Subject:  v27i134:  dmake - dmake Version 3.8, Part33/41
  4. Message-ID: <1992Jan29.164929.1423@sparky.imd.sterling.com>
  5. X-Md4-Signature: cb2daf5655f9a1894a9485c31bcbb74c
  6. Date: Wed, 29 Jan 1992 16:49:29 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: dvadura@plg.waterloo.edu (Dennis Vadura)
  10. Posting-number: Volume 27, Issue 134
  11. Archive-name: dmake/part33
  12. Environment: Atari-ST, Coherent, Mac, MSDOS, OS/2, UNIX
  13. Supersedes: dmake: Volume 19, Issue 22-58
  14.  
  15. ---- Cut Here and feed the following to sh ----
  16. # this is dmake.shar.33 (part 33 of a multipart archive)
  17. # do not concatenate these parts, unpack them in order with /bin/sh
  18. # file dmake/tos/arlib.c continued
  19. #
  20. if test ! -r _shar_seq_.tmp; then
  21.     echo 'Please unpack part 1 first!'
  22.     exit 1
  23. fi
  24. (read Scheck
  25.  if test "$Scheck" != 33; then
  26.     echo Please unpack part "$Scheck" next!
  27.     exit 1
  28.  else
  29.     exit 0
  30.  fi
  31. ) < _shar_seq_.tmp || exit 1
  32. if test -f _shar_wnt_.tmp; then
  33. sed 's/^X//' << 'SHAR_EOF' >> 'dmake/tos/arlib.c' &&
  34. X
  35. static int
  36. _check_cache( name, lib, pmtime, touch )/*
  37. ==========================================
  38. X   Check to see if we have cached member in lib, if so return time in pmtime
  39. X   and return TRUE, otherwise return FALSE, if touch is TRUE then touch
  40. X   the archive member instead. */
  41. char   *name;
  42. char   *lib;
  43. time_t *pmtime;
  44. int    touch;
  45. {
  46. X   register MEMPTR mp;
  47. X   register LIBPTR lp;
  48. X
  49. X   for( lp=_cache; lp != NIL(LIB) && lp->lb_name != lib; lp=lp->lb_next );
  50. X   if( lp == NIL(LIB) ) return( FALSE );
  51. X
  52. X   mp = _find_member( lp, name );
  53. X   if( mp == NIL(MEM) || !mp->m_valid ) return( FALSE );
  54. X
  55. X   if( touch == TRUE )
  56. X   {
  57. X      mp->m_time = *pmtime;
  58. X      mp->m_valid = 1;
  59. X   }
  60. X   else
  61. X      *pmtime = mp->m_time;
  62. X
  63. X   lp->lb_valid   = 1;
  64. X   lp->lb_members = mp;
  65. X
  66. X   return( TRUE );
  67. }
  68. X
  69. X
  70. X
  71. static int
  72. _cache_member( name, lib, mtime )/*
  73. ===================================
  74. X   Cache name in lib along with it's time */
  75. char   *name;
  76. char   *lib;
  77. time_t mtime;
  78. {
  79. X   register MEMPTR mp;
  80. X   register LIBPTR lp;
  81. X
  82. X   for( lp=_cache;
  83. X    lp != NIL(LIB) && lp->lb_name != NIL(char) && lp->lb_name != lib;
  84. X    lp=lp->lb_next);
  85. X
  86. X   if( lp == NIL(LIB) )
  87. X   {
  88. X      lp = (LIBPTR) malloc(sizeof(LIB));
  89. X      if( lp == NIL(LIB) ) No_ram();
  90. X
  91. X      lp->lb_name    = lib;
  92. X      lp->lb_members = NIL(MEM);
  93. X      lp->lb_next    = _cache;
  94. X      lp->lb_valid   = 0;
  95. X      _cache = lp;
  96. X   }
  97. X
  98. X   /* On UNIX ar does not allow multiple copies of the same .o file to live
  99. X    * in the same AR file.  If this is not TRUE then use the commented out
  100. X    * version to set the value of mp. */
  101. X
  102. X   /*mp = _find_member(lp, name);*/
  103. X   mp = NIL(MEM);
  104. X
  105. X   if( mp == NIL(MEM) )
  106. X   {
  107. X      mp = (MEMPTR) malloc(sizeof(char)*offsetof(MEM,m_name[strlen(name)+1]));
  108. X      if( mp == NIL(MEM) ) No_ram();
  109. X
  110. X      strcpy( mp->m_name, name );
  111. X      mp->m_time     = mtime;
  112. X
  113. X      if( lp->lb_members == NIL(MEM) ) {
  114. X     mp->m_next     = mp;
  115. X     lp->lb_members = mp;
  116. X      }
  117. X      else {
  118. X     mp->m_next = lp->lb_members->m_next;
  119. X     lp->lb_members->m_next = mp;
  120. X     lp->lb_members = mp;
  121. X      }
  122. X   }
  123. X   else
  124. X      mp->m_time = mtime;
  125. X
  126. X   mp->m_valid = 1;
  127. X
  128. X   return( lp->lb_valid );
  129. }
  130. X
  131. X
  132. static MEMPTR
  133. _find_member( lp, name )
  134. LIBPTR lp;
  135. char   *name;
  136. {
  137. X   register MEMPTR mp = lp->lb_members;
  138. X
  139. X   if( mp == NIL(MEM) ) return(mp);
  140. X
  141. X   do {
  142. X      if( !strcmp(mp->m_name, name ) ) return( mp );
  143. X      mp = mp->m_next;
  144. X   }
  145. X   while( mp != lp->lb_members );
  146. X
  147. X   return( NIL(MEM) );
  148. }
  149. #endif
  150. X
  151. X
  152. X
  153. void
  154. void_lcache( lib, member )/*
  155. ============================
  156. X   Void the library cache for lib.  If member is NIL(char) then nuke all
  157. X   of the members, if member is NOT NIL(char) then invalidate only that
  158. X   member. */
  159. char *lib;
  160. char *member;
  161. {
  162. #if LC
  163. X   register LIBPTR lp;
  164. X   register MEMPTR mp;
  165. X   register MEMPTR tmp;
  166. X
  167. X   for( lp=_cache; lp != NIL(LIB) && lp->lb_name != lib; lp=lp->lb_next );
  168. X   if( lp == NIL(LIB) ) return;
  169. X
  170. X   if( member == NIL(char) ) {
  171. X      mp = lp->lb_members;
  172. X      do {
  173. X     tmp = mp->m_next;
  174. X     (void) free( mp );
  175. X     mp = tmp;
  176. X      } while( mp != lp->lb_members );
  177. X
  178. X      lp->lb_valid   = 0;
  179. X      lp->lb_members = NIL(MEM);
  180. X      lp->lb_name    = NIL(char);
  181. X   }
  182. X   else {
  183. X      mp=lp->lb_members;
  184. X      do {
  185. X     if( strcmp( member, mp->m_name) == 0 ) {
  186. X        lp->lb_members = mp->m_next;
  187. X        mp->m_valid = 0;
  188. X     }
  189. X       
  190. X     mp=mp->m_next;
  191. X      } while( mp != lp->lb_members );
  192. X   }
  193. #endif
  194. }
  195. SHAR_EOF
  196. chmod 0640 dmake/tos/arlib.c ||
  197. echo 'restore of dmake/tos/arlib.c failed'
  198. Wc_c="`wc -c < 'dmake/tos/arlib.c'`"
  199. test 13303 -eq "$Wc_c" ||
  200.     echo 'dmake/tos/arlib.c: original size 13303, current size' "$Wc_c"
  201. rm -f _shar_wnt_.tmp
  202. fi
  203. # ============= dmake/tos/config.h ==============
  204. if test -f 'dmake/tos/config.h' -a X"$1" != X"-c"; then
  205.     echo 'x - skipping dmake/tos/config.h (File already exists)'
  206.     rm -f _shar_wnt_.tmp
  207. else
  208. > _shar_wnt_.tmp
  209. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/config.h' &&
  210. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/tos/config.h,v 1.1 1992/01/24 03:27:15 dvadura Exp $
  211. -- SYNOPSIS -- Configurarion include file.
  212. -- 
  213. -- DESCRIPTION
  214. --     There is one of these for each specific machine configuration.
  215. --    It can be used to further tweek the machine specific sources
  216. --    so that they compile.
  217. --
  218. -- AUTHOR
  219. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  220. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  221. --
  222. -- COPYRIGHT
  223. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  224. -- 
  225. --      This program is free software; you can redistribute it and/or
  226. --      modify it under the terms of the GNU General Public License
  227. --      (version 1), as published by the Free Software Foundation, and
  228. --      found in the file 'LICENSE' included with this distribution.
  229. -- 
  230. --      This program is distributed in the hope that it will be useful,
  231. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  232. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  233. --      GNU General Public License for more details.
  234. -- 
  235. --      You should have received a copy of the GNU General Public License
  236. --      along with this program;  if not, write to the Free Software
  237. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  238. --
  239. -- LOG
  240. --     $Log: config.h,v $
  241. X * Revision 1.1  1992/01/24  03:27:15  dvadura
  242. X * dmake Version 3.8, Initial revision
  243. X *
  244. */
  245. X
  246. #include <osbind.h>
  247. X
  248. /* define this for configurations that don't have the coreleft function
  249. X * so that the code compiles.  To my knowledge coreleft exists only on
  250. X * Turbo C, but it is needed here since the function is used in many debug
  251. X * macros. */
  252. #define coreleft() Malloc(-1L)
  253. X
  254. /* Define the getcwd function that is used in the code, since BSD does
  255. X * not have getcwd, but call it getwd instead. */
  256. extern char *getcwd ANSI((char *, int));
  257. X
  258. /* Don't need the const decl */
  259. #define CONST
  260. X
  261. /* a small problem with pointer to voids on some unix machines needs this */
  262. #define PVOID void *
  263. SHAR_EOF
  264. chmod 0640 dmake/tos/config.h ||
  265. echo 'restore of dmake/tos/config.h failed'
  266. Wc_c="`wc -c < 'dmake/tos/config.h'`"
  267. test 2029 -eq "$Wc_c" ||
  268.     echo 'dmake/tos/config.h: original size 2029, current size' "$Wc_c"
  269. rm -f _shar_wnt_.tmp
  270. fi
  271. # ============= dmake/tos/config.mk ==============
  272. if test -f 'dmake/tos/config.mk' -a X"$1" != X"-c"; then
  273.     echo 'x - skipping dmake/tos/config.mk (File already exists)'
  274.     rm -f _shar_wnt_.tmp
  275. else
  276. > _shar_wnt_.tmp
  277. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/config.mk' &&
  278. # This is an OS specific configuration file
  279. #    It assumes that OBJDIR, TARGET and DEBUG are previously defined.
  280. #    It defines    CFLAGS, LDARGS, CPPFLAGS, STARTUPFILE, LDOBJS
  281. #            PRINTER, PRINTFLAGS
  282. #    It augments    SRC, OBJDIR, TARGET, CFLAGS, LDLIBS
  283. #
  284. PRINTER        = hw
  285. PRINTFLAGS    = -P$(PRINTER)
  286. STARTUPFILE    = $(OS)/startup.mk
  287. CPPFLAGS     = $(CFLAGS)
  288. LDOBJS        = $(CSTARTUP) $(OBJDIR)/{$(<:f)}
  289. LDARGS        = $(LDFLAGS) -o $@ $(OBJDIR)/*$O
  290. LDFLAGS           += -s
  291. LD        = $(CC)
  292. X
  293. # Debug flags
  294. DB_CFLAGS    = -g -DDBUG
  295. DB_LDFLAGS    = -g
  296. DB_LDLIBS    =
  297. X
  298. # NO Debug flags
  299. NDB_CFLAGS    = -O
  300. NDB_LDFLAGS    =
  301. NDB_LDLIBS    =
  302. X
  303. # Local configuration modifications for CFLAGS.
  304. CFLAGS         += -I$(OS)
  305. X
  306. # Sources that must be defined for each different version
  307. OS_SRC  += arlib.c ruletab.c runargv.c
  308. DOS_SRC  = rmprq.c runargv.c dirbrk.c rmprq.c
  309. UNIX_SRC = arlib.c
  310. BSD_SRC  = putenv.c tempnam.c
  311. X
  312. .SETDIR=$(OS) : $(OS_SRC)
  313. .SETDIR=msdos : $(DOS_SRC)
  314. .SETDIR=unix  : $(UNIX_SRC)
  315. .SETDIR=unix/bsd43 : $(BSD_SRC)
  316. X
  317. SRC += $(OS_SRC) $(DOS_SRC) $(UNIX_SRC) $(BSD_SRC)
  318. X
  319. # Set source dirs so that we can find files named in this
  320. # config file.
  321. .SOURCE.h : $(OS)
  322. X
  323. # See if we modify anything in the lower levels.
  324. .IF $(OSRELEASE) != $(NULL)
  325. X   .INCLUDE .IGNORE : $(OS)$(DIRSEPSTR)$(OSRELEASE)$(DIRSEPSTR)config.mk
  326. .END
  327. SHAR_EOF
  328. chmod 0640 dmake/tos/config.mk ||
  329. echo 'restore of dmake/tos/config.mk failed'
  330. Wc_c="`wc -c < 'dmake/tos/config.mk'`"
  331. test 1262 -eq "$Wc_c" ||
  332.     echo 'dmake/tos/config.mk: original size 1262, current size' "$Wc_c"
  333. rm -f _shar_wnt_.tmp
  334. fi
  335. # ============= dmake/tos/dirbrk.c ==============
  336. if test -f 'dmake/tos/dirbrk.c' -a X"$1" != X"-c"; then
  337.     echo 'x - skipping dmake/tos/dirbrk.c (File already exists)'
  338.     rm -f _shar_wnt_.tmp
  339. else
  340. > _shar_wnt_.tmp
  341. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/dirbrk.c' &&
  342. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/tos/dirbrk.c,v 1.1 1992/01/24 03:27:11 dvadura Exp $
  343. -- SYNOPSIS -- define the directory separator string.
  344. -- 
  345. -- DESCRIPTION
  346. --     Define this string for any character that may appear in a path name
  347. --    and can be used as a directory separator.  Also provide a function
  348. --    to indicate if a given path begins at the root of the file system.
  349. --
  350. -- AUTHOR
  351. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  352. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  353. --
  354. -- COPYRIGHT
  355. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  356. -- 
  357. --      This program is free software; you can redistribute it and/or
  358. --      modify it under the terms of the GNU General Public License
  359. --      (version 1), as published by the Free Software Foundation, and
  360. --      found in the file 'LICENSE' included with this distribution.
  361. -- 
  362. --      This program is distributed in the hope that it will be useful,
  363. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  364. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  365. --      GNU General Public License for more details.
  366. -- 
  367. --      You should have received a copy of the GNU General Public License
  368. --      along with this program;  if not, write to the Free Software
  369. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  370. --
  371. -- LOG
  372. --     $Log: dirbrk.c,v $
  373. X * Revision 1.1  1992/01/24  03:27:11  dvadura
  374. X * dmake Version 3.8, Initial revision
  375. X *
  376. */
  377. X
  378. #include "extern.h"
  379. #include <ctype.h>
  380. X
  381. /* tos uses /, \, and : */
  382. char*    DirBrkStr = "/\\:";
  383. X
  384. /*
  385. ** Return TRUE if the name is the full specification of a path name to a file
  386. ** starting at the root of the file system, otherwise return FALSE
  387. */
  388. int
  389. If_root_path(name)
  390. char *name;
  391. {
  392. X   return( (strchr(DirBrkStr, *name) != NIL(char)) ||
  393. X           (isalpha(*name) && name[1] == ':') );
  394. }
  395. SHAR_EOF
  396. chmod 0640 dmake/tos/dirbrk.c ||
  397. echo 'restore of dmake/tos/dirbrk.c failed'
  398. Wc_c="`wc -c < 'dmake/tos/dirbrk.c'`"
  399. test 1890 -eq "$Wc_c" ||
  400.     echo 'dmake/tos/dirbrk.c: original size 1890, current size' "$Wc_c"
  401. rm -f _shar_wnt_.tmp
  402. fi
  403. # ============= dmake/tos/make.sh ==============
  404. if test -f 'dmake/tos/make.sh' -a X"$1" != X"-c"; then
  405.     echo 'x - skipping dmake/tos/make.sh (File already exists)'
  406.     rm -f _shar_wnt_.tmp
  407. else
  408. > _shar_wnt_.tmp
  409. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/make.sh' &&
  410. mkdir objects
  411. gcc -c -I. -Itos -O infer.c
  412. mv infer.o objects
  413. gcc -c -I. -Itos -O make.c
  414. mv make.o objects
  415. gcc -c -I. -Itos -O stat.c
  416. mv stat.o objects
  417. gcc -c -I. -Itos -O expand.c
  418. mv expand.o objects
  419. gcc -c -I. -Itos -O dmstring.c
  420. mv dmstring.o objects
  421. gcc -c -I. -Itos -O hash.c
  422. mv hash.o objects
  423. gcc -c -I. -Itos -O dag.c
  424. mv dag.o objects
  425. gcc -c -I. -Itos -O dmake.c
  426. mv dmake.o objects
  427. gcc -c -I. -Itos -O path.c
  428. mv path.o objects
  429. gcc -c -I. -Itos -O imacs.c
  430. mv imacs.o objects
  431. gcc -c -I. -Itos -O sysintf.c
  432. mv sysintf.o objects
  433. gcc -c -I. -Itos -O parse.c
  434. mv parse.o objects
  435. gcc -c -I. -Itos -O getinp.c
  436. mv getinp.o objects
  437. gcc -c -I. -Itos -O quit.c
  438. mv quit.o objects
  439. gcc -c -I. -Itos -O state.c
  440. mv state.o objects
  441. gcc -c -I. -Itos -O basename.c
  442. mv basename.o objects
  443. gcc -c -I. -Itos -O dmdump.c
  444. mv dmdump.o objects
  445. gcc -c -I. -Itos -O macparse.c
  446. mv macparse.o objects
  447. gcc -c -I. -Itos -O rulparse.c
  448. mv rulparse.o objects
  449. gcc -c -I. -Itos -O percent.c
  450. mv percent.o objects
  451. gcc -c -I. -Itos -O function.c
  452. mv function.o objects
  453. gcc -c -I. -Itos -O tos/arlib.c
  454. mv arlib.o objects
  455. gcc -c -I. -Itos -O tos/ruletab.c
  456. mv ruletab.o objects
  457. gcc -c -I. -Itos -O tos/runargv.c
  458. mv runargv.o objects
  459. gcc -c -I. -Itos -O msdos/rmprq.c
  460. mv rmprq.o objects
  461. gcc -c -I. -Itos -O msdos/dirbrk.c
  462. mv dirbrk.o objects
  463. gcc -c -I. -Itos -O unix/bsd43/putenv.c
  464. mv putenv.o objects
  465. gcc -c -I. -Itos -O unix/bsd43/tempnam.c
  466. mv tempnam.o objects
  467. gcc -s  -o dmake objects/*.o
  468. cp tos/startup.mk startup.mk
  469. SHAR_EOF
  470. chmod 0640 dmake/tos/make.sh ||
  471. echo 'restore of dmake/tos/make.sh failed'
  472. Wc_c="`wc -c < 'dmake/tos/make.sh'`"
  473. test 1480 -eq "$Wc_c" ||
  474.     echo 'dmake/tos/make.sh: original size 1480, current size' "$Wc_c"
  475. rm -f _shar_wnt_.tmp
  476. fi
  477. # ============= dmake/tos/public.h ==============
  478. if test -f 'dmake/tos/public.h' -a X"$1" != X"-c"; then
  479.     echo 'x - skipping dmake/tos/public.h (File already exists)'
  480.     rm -f _shar_wnt_.tmp
  481. else
  482. > _shar_wnt_.tmp
  483. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/public.h' &&
  484. /* RCS      -- $Header$
  485. -- WARNING  -- This file is AUTOMATICALLY GENERATED DO NOT EDIT IT
  486. --
  487. -- SYNOPSIS -- Local functions exported to be visible by others.
  488. --
  489. -- DESCRIPTION
  490. --      This file is generated by 'genpub'.  Function declarations
  491. --      that appear in this file are extracted by 'genpub' from
  492. --      source files.  Any function in the source file whose definition
  493. --      appears like:
  494. --
  495. --          PUBLIC return_type
  496. --          function( arg_list );
  497. --          type_expr1 arg1;
  498. --          ...
  499. --
  500. --      has its definition extracted and a line of the form:
  501. --
  502. --          return_type function ANSI((type_expr1,type_expr2,...));
  503. --
  504. --      entered into the output file.
  505. --
  506. -- AUTHOR
  507. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  508. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  509. --
  510. -- COPYRIGHT
  511. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  512. -- 
  513. --      This program is free software; you can redistribute it and/or
  514. --      modify it under the terms of the GNU General Public License
  515. --      (version 1), as published by the Free Software Foundation, and
  516. --      found in the file 'LICENSE' included with this distribution.
  517. -- 
  518. --      This program is distributed in the hope that it will be useful,
  519. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  520. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  521. --      GNU General Public License for more details.
  522. -- 
  523. --      You should have received a copy of the GNU General Public License
  524. --      along with this program;  if not, write to the Free Software
  525. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  526. --
  527. -- LOG
  528. --     $Log$
  529. */
  530. X
  531. #ifndef _DMAKE_PUBLIC_h
  532. #define _DMAKE_PUBLIC_h
  533. X
  534. void Infer_recipe ANSI((CELLPTR, CELLPTR));
  535. int Make_targets ANSI(());
  536. int Exec_commands ANSI((CELLPTR));
  537. void Print_cmnd ANSI((char *, int, int));
  538. void Pop_dir ANSI((int));
  539. void Append_line ANSI((char *, int, FILE *, char *, int, int));
  540. void Stat_target ANSI((CELLPTR, int));
  541. char * Expand ANSI((char *));
  542. char * Apply_edit ANSI((char *, char *, char *, int, int));
  543. void Map_esc ANSI((char *));
  544. char* Apply_modifiers ANSI((int, char *));
  545. char* Tokenize ANSI((char *, char *));
  546. char * _strjoin ANSI((char *, char *, int, int));
  547. char * _stradd ANSI((char *, char *, int));
  548. char * _strapp ANSI((char *, char *));
  549. char * _strdup ANSI((char *));
  550. char * _strdup2 ANSI((char *));
  551. char * _strpbrk ANSI((char *, char *));
  552. char * _strspn ANSI((char *, char *));
  553. char * _strstr ANSI((char *, char *));
  554. char * _substr ANSI((char *, char *));
  555. uint16 Hash ANSI((char *, uint32 *));
  556. HASHPTR Get_name ANSI((char *, HASHPTR *, int));
  557. HASHPTR Search_table ANSI((HASHPTR *, char *, uint16 *, uint32 *));
  558. HASHPTR Def_macro ANSI((char *, char *, int));
  559. CELLPTR Def_cell ANSI((char *));
  560. LINKPTR Add_prerequisite ANSI((CELLPTR, CELLPTR, int, int));
  561. void Clear_prerequisites ANSI((CELLPTR));
  562. int Test_circle ANSI((CELLPTR, int));
  563. STRINGPTR Def_recipe ANSI((char *, STRINGPTR, int, int));
  564. t_attr Rcp_attribute ANSI((char *));
  565. int main ANSI((int, char **));
  566. FILE * Openfile ANSI((char *, int, int));
  567. FILE * Closefile ANSI(());
  568. FILE * Search_file ANSI((char *, char **));
  569. char * Filename ANSI(());
  570. int Nestlevel ANSI(());
  571. void No_ram ANSI(());
  572. int Usage ANSI((int));
  573. int Version ANSI(());
  574. char * Get_suffix ANSI((char *));
  575. char * Build_path ANSI((char *, char *));
  576. void Make_rules ANSI(());
  577. void Create_macro_vars ANSI(());
  578. time_t Do_stat ANSI((char *, char *, char **));
  579. int Do_touch ANSI((char *, char *, char **));
  580. void Void_lib_cache ANSI((char *, char *));
  581. time_t Do_time ANSI(());
  582. int Do_cmnd ANSI((char *, int, int, CELLPTR, int, int, int));
  583. char ** Pack_argv ANSI((int, int, char *));
  584. char * Read_env_string ANSI((char *));
  585. int Write_env_string ANSI((char *, char *));
  586. void ReadEnvironment ANSI(());
  587. void Catch_signals ANSI((void (*)()));
  588. void Clear_signals ANSI(());
  589. void Prolog ANSI((int, char* []));
  590. void Epilog ANSI((int));
  591. char * Get_current_dir ANSI(());
  592. int Set_dir ANSI((char*));
  593. char Get_switch_char ANSI(());
  594. FILE* Get_temp ANSI((char **, char *, int));
  595. FILE * Start_temp ANSI((char *, CELLPTR, char **));
  596. void Open_temp_error ANSI((char *, char *));
  597. void Link_temp ANSI((CELLPTR, FILE *, char *));
  598. void Close_temp ANSI((CELLPTR, FILE *));
  599. void Unlink_temp_files ANSI((CELLPTR));
  600. void Handle_result ANSI((int, int, int, CELLPTR));
  601. void Update_time_stamp ANSI((CELLPTR));
  602. int Remove_file ANSI((char *));
  603. void Parse ANSI((FILE *));
  604. int Get_line ANSI((char *, FILE *));
  605. char * Do_comment ANSI((char *, char **, int));
  606. char * Get_token ANSI((TKSTRPTR, char *, int));
  607. void Quit ANSI(());
  608. void Read_state ANSI(());
  609. void Write_state ANSI(());
  610. int Check_state ANSI((CELLPTR, STRINGPTR *, int));
  611. char* basename ANSI((char *));
  612. void Dump ANSI(());
  613. void Dump_recipe ANSI((STRINGPTR));
  614. int Parse_macro ANSI((char *, int));
  615. int Macro_op ANSI((char *));
  616. int Parse_rule_def ANSI((int *));
  617. int Rule_op ANSI((char *));
  618. void Add_recipe_to_list ANSI((char *, int, int));
  619. void Bind_rules_to_targets ANSI((int));
  620. int Set_group_attributes ANSI((char *));
  621. DFALINKPTR Match_dfa ANSI((char *));
  622. void Check_circle_dfa ANSI(());
  623. void Add_nfa ANSI((char *));
  624. char * Exec_function ANSI((char *));
  625. time_t seek_arch ANSI((char *, char *));
  626. int touch_arch ANSI((char *, char *));
  627. int runargv ANSI((CELLPTR, int, int, int, int, char *));
  628. void Clean_up_processes ANSI(());
  629. int Wait_for_child ANSI((int, int));
  630. void Remove_prq ANSI((CELLPTR));
  631. int If_root_path ANSI((char *));
  632. X
  633. #endif
  634. SHAR_EOF
  635. chmod 0640 dmake/tos/public.h ||
  636. echo 'restore of dmake/tos/public.h failed'
  637. Wc_c="`wc -c < 'dmake/tos/public.h'`"
  638. test 5487 -eq "$Wc_c" ||
  639.     echo 'dmake/tos/public.h: original size 5487, current size' "$Wc_c"
  640. rm -f _shar_wnt_.tmp
  641. fi
  642. # ============= dmake/tos/putenv.c ==============
  643. if test -f 'dmake/tos/putenv.c' -a X"$1" != X"-c"; then
  644.     echo 'x - skipping dmake/tos/putenv.c (File already exists)'
  645.     rm -f _shar_wnt_.tmp
  646. else
  647. > _shar_wnt_.tmp
  648. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/putenv.c' &&
  649. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/tos/putenv.c,v 1.1 1992/01/24 03:27:17 dvadura Exp $
  650. -- SYNOPSIS -- my own putenv for BSD like systems.
  651. -- 
  652. -- DESCRIPTION
  653. --     This originally came from MKS, but I rewrote it to fix a bug with
  654. --    replacing existing strings, probably never happened but the code
  655. --    was wrong nonetheless.
  656. --
  657. -- AUTHOR
  658. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  659. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  660. --
  661. -- COPYRIGHT
  662. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  663. -- 
  664. --      This program is free software; you can redistribute it and/or
  665. --      modify it under the terms of the GNU General Public License
  666. --      (version 1), as published by the Free Software Foundation, and
  667. --      found in the file 'LICENSE' included with this distribution.
  668. -- 
  669. --      This program is distributed in the hope that it will be useful,
  670. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  671. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  672. --      GNU General Public License for more details.
  673. -- 
  674. --      You should have received a copy of the GNU General Public License
  675. --      along with this program;  if not, write to the Free Software
  676. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  677. --
  678. -- LOG
  679. --     $Log: putenv.c,v $
  680. X * Revision 1.1  1992/01/24  03:27:17  dvadura
  681. X * dmake Version 3.8, Initial revision
  682. X *
  683. */
  684. X
  685. #include <stdio.h>
  686. #include <string.h>
  687. X
  688. int
  689. putenv( str )/*
  690. ===============
  691. X   Take a string of the form NAME=value and stick it into the environment.
  692. X   We do this by allocating a new set of pointers if we have to add a new
  693. X   string and by replacing an existing pointer if the value replaces the value
  694. X   of an existing string. */
  695. char *str;
  696. {
  697. X   extern char **environ;        /* The current environment. */
  698. X   static char **ourenv = NULL;        /* A new environment        */
  699. X   register char **p;
  700. X   register char *q;
  701. X   int      size;
  702. X
  703. X   /* First search the current environment and see if we can replace a
  704. X    * string. */
  705. X   for( p=environ; *p; p++ ) {
  706. X      register char *s = str;
  707. X
  708. X      for( q = *p; *q && *s && *s == *q; q++, s++ )
  709. X     if( *s == '=' ) {
  710. X        *p = str;
  711. X        return(0);            /* replaced it so go away */
  712. X     }
  713. X   }
  714. X
  715. X   /* Ok, can't replace a string so need to grow the environment. */
  716. X   size = p - environ + 2;    /* size of new environment */
  717. X                /* size of old is size-1   */
  718. X
  719. X   /* It's the first time, so allocate a new environment since we don't know
  720. X    * where the old one is comming from. */
  721. X   if( ourenv == NULL ) {
  722. X      if( (ourenv = (char **) malloc( sizeof(char *)*size )) == NULL )
  723. X     return(1);
  724. X
  725. X      memcpy( (char *)ourenv, (char *)environ, (size-2)*sizeof(char *) );
  726. X   }
  727. X   else if( (ourenv = (char **)realloc( ourenv, size*sizeof(char *))) == NULL )
  728. X      return(1);
  729. X
  730. X   ourenv[--size] = NULL;
  731. X   ourenv[--size] = str;
  732. X
  733. X   environ = ourenv;
  734. X   return(0);
  735. }
  736. SHAR_EOF
  737. chmod 0640 dmake/tos/putenv.c ||
  738. echo 'restore of dmake/tos/putenv.c failed'
  739. Wc_c="`wc -c < 'dmake/tos/putenv.c'`"
  740. test 2932 -eq "$Wc_c" ||
  741.     echo 'dmake/tos/putenv.c: original size 2932, current size' "$Wc_c"
  742. rm -f _shar_wnt_.tmp
  743. fi
  744. # ============= dmake/tos/rmprq.c ==============
  745. if test -f 'dmake/tos/rmprq.c' -a X"$1" != X"-c"; then
  746.     echo 'x - skipping dmake/tos/rmprq.c (File already exists)'
  747.     rm -f _shar_wnt_.tmp
  748. else
  749. > _shar_wnt_.tmp
  750. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/rmprq.c' &&
  751. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/tos/rmprq.c,v 1.1 1992/01/24 03:27:16 dvadura Exp $
  752. -- SYNOPSIS -- remove prerequisites code.
  753. -- 
  754. -- DESCRIPTION
  755. --    This code is different for DOS and for UNIX and parallel make
  756. --    architectures since the parallel case requires the rm's to be
  757. --    run in parallel, whereas DOS guarantees to run them sequentially.
  758. -- 
  759. -- AUTHOR
  760. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  761. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  762. --
  763. -- COPYRIGHT
  764. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  765. -- 
  766. --      This program is free software; you can redistribute it and/or
  767. --      modify it under the terms of the GNU General Public License
  768. --      (version 1), as published by the Free Software Foundation, and
  769. --      found in the file 'LICENSE' included with this distribution.
  770. -- 
  771. --      This program is distributed in the hope that it will be useful,
  772. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  773. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  774. --      GNU General Public License for more details.
  775. -- 
  776. --      You should have received a copy of the GNU General Public License
  777. --      along with this program;  if not, write to the Free Software
  778. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  779. --
  780. -- LOG
  781. --     $Log: rmprq.c,v $
  782. X * Revision 1.1  1992/01/24  03:27:16  dvadura
  783. X * dmake Version 3.8, Initial revision
  784. X *
  785. */
  786. X
  787. #include "extern.h"
  788. #include "alloc.h"
  789. X
  790. void
  791. Remove_prq( tcp )
  792. CELLPTR tcp;
  793. {
  794. X   tcp->ce_flag         &= ~(F_MADE|F_VISITED);
  795. X   tcp->CE_HOW->hw_flag &= ~(F_MADE|F_VISITED);
  796. X   tcp->ce_time          = 0L;
  797. X
  798. X   Make( tcp, tcp->CE_HOW, NIL(CELL) );
  799. }
  800. SHAR_EOF
  801. chmod 0640 dmake/tos/rmprq.c ||
  802. echo 'restore of dmake/tos/rmprq.c failed'
  803. Wc_c="`wc -c < 'dmake/tos/rmprq.c'`"
  804. test 1725 -eq "$Wc_c" ||
  805.     echo 'dmake/tos/rmprq.c: original size 1725, current size' "$Wc_c"
  806. rm -f _shar_wnt_.tmp
  807. fi
  808. # ============= dmake/tos/ruletab.c ==============
  809. if test -f 'dmake/tos/ruletab.c' -a X"$1" != X"-c"; then
  810.     echo 'x - skipping dmake/tos/ruletab.c (File already exists)'
  811.     rm -f _shar_wnt_.tmp
  812. else
  813. > _shar_wnt_.tmp
  814. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/ruletab.c' &&
  815. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/tos/ruletab.c,v 1.1 1992/01/24 03:27:12 dvadura Exp $
  816. -- SYNOPSIS -- Default initial configuration of dmake.
  817. -- 
  818. -- DESCRIPTION
  819. --     Define here the initial set of rules that are defined before
  820. --    dmake performs any processing.
  821. --
  822. -- AUTHOR
  823. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  824. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  825. --
  826. -- COPYRIGHT
  827. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  828. -- 
  829. --      This program is free software; you can redistribute it and/or
  830. --      modify it under the terms of the GNU General Public License
  831. --      (version 1), as published by the Free Software Foundation, and
  832. --      found in the file 'LICENSE' included with this distribution.
  833. -- 
  834. --      This program is distributed in the hope that it will be useful,
  835. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  836. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  837. --      GNU General Public License for more details.
  838. -- 
  839. --      You should have received a copy of the GNU General Public License
  840. --      along with this program;  if not, write to the Free Software
  841. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  842. --
  843. -- LOG
  844. --     $Log: ruletab.c,v $
  845. X * Revision 1.1  1992/01/24  03:27:12  dvadura
  846. X * dmake Version 3.8, Initial revision
  847. X *
  848. */
  849. X
  850. /* These are control macros for dmake that MUST be defined at some point
  851. X * if they are NOT dmake will not work!  These are default definitions.  They
  852. X * may be overridden inside the .STARTUP makefile, they are here
  853. X * strictly so that dmake can parse the STARTUP makefile */
  854. X
  855. static char *_rules[] = {
  856. X    "MAXPROCESSLIMIT := 1",
  857. X    "MAXPROCESS := 1",
  858. X    "MAXLINELENGTH := 8190",
  859. X    ".IMPORT .IGNORE: ROOTDIR",
  860. X    ".MAKEFILES : makefile.mk Makefile makefile",
  861. X    ".SOURCE    : .NULL",
  862. #include "startup.h"
  863. X    0 };
  864. X
  865. char **Rule_tab = _rules; /* for sundry reasons in Get_environment() */
  866. SHAR_EOF
  867. chmod 0640 dmake/tos/ruletab.c ||
  868. echo 'restore of dmake/tos/ruletab.c failed'
  869. Wc_c="`wc -c < 'dmake/tos/ruletab.c'`"
  870. test 1966 -eq "$Wc_c" ||
  871.     echo 'dmake/tos/ruletab.c: original size 1966, current size' "$Wc_c"
  872. rm -f _shar_wnt_.tmp
  873. fi
  874. # ============= dmake/tos/runargv.c ==============
  875. if test -f 'dmake/tos/runargv.c' -a X"$1" != X"-c"; then
  876.     echo 'x - skipping dmake/tos/runargv.c (File already exists)'
  877.     rm -f _shar_wnt_.tmp
  878. else
  879. > _shar_wnt_.tmp
  880. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/runargv.c' &&
  881. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/tos/runargv.c,v 1.1 1992/01/24 03:27:13 dvadura Exp $
  882. -- SYNOPSIS -- run a sub process.
  883. -- 
  884. -- DESCRIPTION
  885. --    Use spawn to run a subprocess.
  886. --
  887. -- AUTHOR
  888. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  889. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  890. --
  891. -- COPYRIGHT
  892. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  893. -- 
  894. --      This program is free software; you can redistribute it and/or
  895. --      modify it under the terms of the GNU General Public License
  896. --      (version 1), as published by the Free Software Foundation, and
  897. --      found in the file 'LICENSE' included with this distribution.
  898. -- 
  899. --      This program is distributed in the hope that it will be useful,
  900. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  901. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  902. --      GNU General Public License for more details.
  903. -- 
  904. --      You should have received a copy of the GNU General Public License
  905. --      along with this program;  if not, write to the Free Software
  906. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  907. --
  908. -- LOG
  909. --     $Log: runargv.c,v $
  910. X * Revision 1.1  1992/01/24  03:27:13  dvadura
  911. X * dmake Version 3.8, Initial revision
  912. X *
  913. */
  914. X
  915. #include <process.h>
  916. #include <errno.h>
  917. #include "extern.h"
  918. #include "sysintf.h"
  919. X
  920. static int  _abort_flg = FALSE;
  921. static void _add_child ANSI((CELLPTR, int));
  922. static void _finished_child ANSI((int));
  923. X
  924. PUBLIC int
  925. runargv(target, ignore, group, last, shell, cmd)
  926. CELLPTR target;
  927. int     ignore;
  928. int    group;
  929. int    last;
  930. int    shell;
  931. char    *cmd;
  932. {
  933. X   int status;
  934. X   char **argv;
  935. X   char path[MAX_PATH_LEN+1];
  936. X
  937. X   argv = Pack_argv( group, shell, cmd );
  938. X   _add_child(target, ignore);
  939. X
  940. X   /* save and restore current working directory across a spawn call */
  941. X   strcpy(path, Get_current_dir());
  942. X   status = spawnvp(P_WAIT, *argv, argv);
  943. X   Set_dir(path);
  944. X
  945. X   if( status == -1 ) Error("%s: %s", argv[0], strerror(errno));
  946. X   _finished_child(status);
  947. X   if( last && !Doing_bang ) Update_time_stamp( target );
  948. X
  949. X   return( 0 );
  950. }
  951. X
  952. X
  953. PUBLIC void
  954. Clean_up_processes()
  955. {
  956. X   _abort_flg = TRUE;
  957. X   _finished_child(-1);
  958. }
  959. X
  960. X
  961. PUBLIC int
  962. Wait_for_child( abort_flg, pid )
  963. int abort_flg;
  964. int pid;
  965. {
  966. X   return(1);
  967. }
  968. X
  969. X
  970. static int     _valid = -1;
  971. static CELLPTR _tg;
  972. static int     _ignore;
  973. X
  974. static void
  975. _add_child( target, ignore )
  976. CELLPTR target;
  977. int    ignore;
  978. {
  979. X   _tg = target;
  980. X   _ignore = ignore;
  981. X   _valid = 0;
  982. X
  983. X   Current_target = NIL(CELL);
  984. }
  985. X
  986. X
  987. static void
  988. _finished_child(status)
  989. int    status;
  990. {
  991. X   if( _valid == -1 ) return;
  992. X   Unlink_temp_files( _tg );
  993. X   _valid = -1;
  994. X   Handle_result( status, _ignore, _abort_flg, _tg );
  995. }
  996. SHAR_EOF
  997. chmod 0640 dmake/tos/runargv.c ||
  998. echo 'restore of dmake/tos/runargv.c failed'
  999. Wc_c="`wc -c < 'dmake/tos/runargv.c'`"
  1000. test 2709 -eq "$Wc_c" ||
  1001.     echo 'dmake/tos/runargv.c: original size 2709, current size' "$Wc_c"
  1002. rm -f _shar_wnt_.tmp
  1003. fi
  1004. # ============= dmake/tos/startup.h ==============
  1005. if test -f 'dmake/tos/startup.h' -a X"$1" != X"-c"; then
  1006.     echo 'x - skipping dmake/tos/startup.h (File already exists)'
  1007.     rm -f _shar_wnt_.tmp
  1008. else
  1009. > _shar_wnt_.tmp
  1010. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/startup.h' &&
  1011. /* This file contains the default value of the MAKESTARTUP variable.
  1012. X * You must set the quoted string below to the default path to the startup
  1013. X * variable, so that it gets compiled in.  LEAVE ROOTDIR at the front of
  1014. X * the path.  This allows the user to customize his environment for dmake
  1015. X * by setting up a new ROOTDIR environment variable. */
  1016. X
  1017. "MAKESTARTUP := $(ROOTDIR)/etc/startup.mk",
  1018. SHAR_EOF
  1019. chmod 0640 dmake/tos/startup.h ||
  1020. echo 'restore of dmake/tos/startup.h failed'
  1021. Wc_c="`wc -c < 'dmake/tos/startup.h'`"
  1022. test 392 -eq "$Wc_c" ||
  1023.     echo 'dmake/tos/startup.h: original size 392, current size' "$Wc_c"
  1024. rm -f _shar_wnt_.tmp
  1025. fi
  1026. # ============= dmake/tos/startup.mk ==============
  1027. if test -f 'dmake/tos/startup.mk' -a X"$1" != X"-c"; then
  1028.     echo 'x - skipping dmake/tos/startup.mk (File already exists)'
  1029.     rm -f _shar_wnt_.tmp
  1030. else
  1031. > _shar_wnt_.tmp
  1032. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/startup.mk' &&
  1033. # Generic UNIX DMAKE startup file.  Customize to suit your needs.
  1034. # Should work for both SYSV, and BSD 4.3
  1035. # See the documentation for a description of internally defined macros.
  1036. #
  1037. # Disable warnings for macros redefined here that were given
  1038. # on the command line.
  1039. __.SILENT := $(.SILENT)
  1040. .SILENT   := yes
  1041. X
  1042. # Configuration parameters for DMAKE startup.mk file
  1043. # Set these to NON-NULL if you wish to turn the parameter on.
  1044. _HAVE_RCS    :=         # yes => RCS  is installed.
  1045. _HAVE_SCCS    :=         # yes => SCCS is installed.
  1046. X
  1047. # Applicable suffix definitions
  1048. A := .olb    # Libraries
  1049. E :=        # Executables
  1050. F := .f        # Fortran
  1051. O := .o        # Objects
  1052. P := .p        # Pascal
  1053. S := .s        # Assembler sources
  1054. V := ,v        # RCS suffix
  1055. X
  1056. # Recipe execution configurations
  1057. SHELL        := /bin/sh
  1058. SHELLFLAGS    := 
  1059. GROUPSHELL    := $(SHELL)
  1060. GROUPFLAGS    := 
  1061. SHELLMETAS    := |();&<>?*][$$:\\#`'"
  1062. GROUPSUFFIX    := .bat
  1063. DIVFILE         = $(TMPFILE)
  1064. X
  1065. # Standard C-language command names and flags
  1066. X   CPP       := /gnu/lib/cpp    # C-preprocessor
  1067. X   CC      := gcc        # C-compiler and flags
  1068. X   CFLAGS  +=
  1069. X
  1070. X   AS      := /gnu/lib/as    # Assembler and flags
  1071. X   ASFLAGS += 
  1072. X
  1073. X   LD       = $(CC)        # Loader and flags
  1074. X   LDFLAGS +=
  1075. X   LDLIBS   =
  1076. X
  1077. # Definition of $(MAKE) macro for recursive makes.
  1078. X   MAKE = $(MAKECMD) $(MFLAGS)
  1079. X
  1080. # Definition of Print command for this system.
  1081. X   PRINT = lpr
  1082. X
  1083. # Language and Parser generation Tools and their flags
  1084. X   YACC      := yacc        # standard yacc
  1085. X   YFLAGS +=
  1086. X   YTAB      := y.tab        # yacc output files name stem.
  1087. X
  1088. X   LEX      := lex        # standard lex
  1089. X   LFLAGS +=
  1090. X   LEXYY  := lex.yy        # lex output file
  1091. X
  1092. # Other Compilers, Tools and their flags
  1093. X   PC    := pc            # pascal compiler
  1094. X   RC    := f77            # ratfor compiler
  1095. X   FC    := f77            # fortran compiler
  1096. X
  1097. X   CO       := co        # check out for RCS
  1098. X   COFLAGS += -q
  1099. X
  1100. X   AR     := gar        # archiver
  1101. X   ARFLAGS+= ruv
  1102. X
  1103. X   RM       := /gnu/bin/rm    # remove a file command
  1104. X   RMFLAGS +=
  1105. X
  1106. # Implicit generation rules for making inferences.
  1107. # We don't provide .yr or .ye rules here.  They're obsolete.
  1108. # Rules for making *$O
  1109. X   %$O : %.c ; $(CC) $(CFLAGS) -c $<
  1110. X   %$O : %$P ; $(PC) $(PFLAGS) -c $<
  1111. X   %$O : %$S ; $(AS) $(ASFLAGS) $<
  1112. X   %$O : %.cl ; class -c $<
  1113. X   %$O : %.e %.r %.F %$F
  1114. X    $(FC) $(RFLAGS) $(EFLAGS) $(FFLAGS) -c $<
  1115. X
  1116. # Executables
  1117. X   %$E : %$O ; $(LD) $(LDFLAGS) -o $@ $< $(LDLIBES)
  1118. X
  1119. # lex and yacc rules
  1120. X   %.c : %.y ; $(YACC)  $(YFLAGS) $<; mv $(YTAB).c $@
  1121. X   %.c : %.l ; $(LEX)   $(LFLAGS) $<; mv $(LEXYY).c $@
  1122. X
  1123. # This rule tells how to make *.out from it's immediate list of prerequisites
  1124. # UNIX only.
  1125. X   %.out :; $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
  1126. X
  1127. # RCS support
  1128. .IF $(_HAVE_RCS)
  1129. X   % : %$V $$(@:d)RCS/$$(@:f)$V;- $(CO) $(COFLAGS) $@
  1130. X   .NOINFER : %$V $$(@:d)RCS/$$(@:f)$V
  1131. .END
  1132. X
  1133. # SCCS support
  1134. .IF $(_HAVE_SCCS)
  1135. X   % : s.% ; get $<
  1136. X   .NOINFER : s.%
  1137. .END
  1138. X
  1139. # Recipe to make archive files.
  1140. %$A :
  1141. [
  1142. X   $(AR) $(ARFLAGS) $@ $?
  1143. X   $(RM) $(RMFLAGS) $?
  1144. X   ranlib $@
  1145. ]
  1146. X
  1147. # DMAKE uses this recipe to remove intermediate targets
  1148. .REMOVE :; $(RM) -f $<
  1149. X
  1150. # AUGMAKE extensions for SYSV compatibility
  1151. @B = $(@:b)
  1152. @D = $(@:d)
  1153. @F = $(@:f)
  1154. "*B" = $(*:b)
  1155. "*D" = $(*:d)
  1156. "*F" = $(*:f)
  1157. <B = $(<:b)
  1158. <D = $(<:d)
  1159. <F = $(<:f)
  1160. ?B = $(?:b)
  1161. ?F = $(?:f)
  1162. ?D = $(?:d)
  1163. X
  1164. # Turn warnings back to previous setting.
  1165. .SILENT := $(__.SILENT)
  1166. X
  1167. # Local startup file if any
  1168. .INCLUDE .IGNORE: "_startup.mk"
  1169. SHAR_EOF
  1170. chmod 0640 dmake/tos/startup.mk ||
  1171. echo 'restore of dmake/tos/startup.mk failed'
  1172. Wc_c="`wc -c < 'dmake/tos/startup.mk'`"
  1173. test 3239 -eq "$Wc_c" ||
  1174.     echo 'dmake/tos/startup.mk: original size 3239, current size' "$Wc_c"
  1175. rm -f _shar_wnt_.tmp
  1176. fi
  1177. # ============= dmake/tos/sysintf.h ==============
  1178. if test -f 'dmake/tos/sysintf.h' -a X"$1" != X"-c"; then
  1179.     echo 'x - skipping dmake/tos/sysintf.h (File already exists)'
  1180.     rm -f _shar_wnt_.tmp
  1181. else
  1182. > _shar_wnt_.tmp
  1183. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/sysintf.h' &&
  1184. /*
  1185. ** assorted bits of system interface, for common routines inside dmake.
  1186. ** System specific code can be found in the config.h files for each
  1187. ** of the system specifications.
  1188. */
  1189. #define STAT stat
  1190. #define VOID_LCACHE(l,m) (void) void_lcache(l,m)
  1191. #define Hook_std_writes(A)
  1192. #define GETPID getpid()
  1193. X
  1194. /*
  1195. ** standard C items
  1196. */
  1197. X
  1198. /*
  1199. ** DOS interface standard items
  1200. */
  1201. #define    getswitchar()    '-'
  1202. X
  1203. /*
  1204. ** make parameters
  1205. */
  1206. #define    MAX_PATH_LEN    1024
  1207. SHAR_EOF
  1208. chmod 0640 dmake/tos/sysintf.h ||
  1209. echo 'restore of dmake/tos/sysintf.h failed'
  1210. Wc_c="`wc -c < 'dmake/tos/sysintf.h'`"
  1211. test 441 -eq "$Wc_c" ||
  1212.     echo 'dmake/tos/sysintf.h: original size 441, current size' "$Wc_c"
  1213. rm -f _shar_wnt_.tmp
  1214. fi
  1215. # ============= dmake/tos/tempnam.c ==============
  1216. if test -f 'dmake/tos/tempnam.c' -a X"$1" != X"-c"; then
  1217.     echo 'x - skipping dmake/tos/tempnam.c (File already exists)'
  1218.     rm -f _shar_wnt_.tmp
  1219. else
  1220. > _shar_wnt_.tmp
  1221. sed 's/^X//' << 'SHAR_EOF' > 'dmake/tos/tempnam.c' &&
  1222. /*LINTLIBRARY*/
  1223. #include <stdio.h>
  1224. #include <string.h>
  1225. #include <stdlib.h>
  1226. X
  1227. #define max(A,B) (((A)<(B))?(B):(A))
  1228. X
  1229. extern char *mktemp();
  1230. extern int access();
  1231. X
  1232. static char *cpdir();
  1233. static char  *seed="AAA";
  1234. X
  1235. /* BSD stdio.h doesn't define P_tmpdir, so let's do it here */
  1236. #ifndef P_tmpdir
  1237. static char *P_tmpdir = "/tmp";
  1238. #endif
  1239. X
  1240. char *
  1241. tempnam(dir, prefix)
  1242. char *dir;        /* use this directory please (if non-NULL) */
  1243. char *prefix;        /* use this (if non-NULL) as filename prefix */
  1244. {
  1245. X   register char *p, *q, *tmpdir;
  1246. X   int            tl=0, dl=0, pl;
  1247. X
  1248. X   pl = strlen(P_tmpdir);
  1249. X
  1250. X   if( (tmpdir = getenv("TMPDIR")) != NULL ) tl = strlen(tmpdir);
  1251. X   if( dir != NULL ) dl = strlen(dir);
  1252. X
  1253. X   if( (p = malloc((unsigned)(max(max(dl,tl),pl)+16))) == NULL )
  1254. X     return(NULL);
  1255. X
  1256. X   *p = '\0';
  1257. X
  1258. X   if( (tl == 0) || (access( cpdir(p, tmpdir), 3) != 0) )
  1259. X     if( (dl == 0) || (access( cpdir(p, dir), 3) != 0) )
  1260. X    if( access( cpdir(p, P_tmpdir),   3) != 0 )
  1261. X       if( access( cpdir(p, "/tmp"),  3) != 0 )
  1262. X          return(NULL);
  1263. X
  1264. X   (void) strcat(p, "/");
  1265. X   if(prefix)
  1266. X   {
  1267. X      *(p+strlen(p)+5) = '\0';
  1268. X      (void)strncat(p, prefix, 5);
  1269. X   }
  1270. X
  1271. X   (void)strcat(p, seed);
  1272. X   (void)strcat(p, "XXXXXX");
  1273. X
  1274. X   q = seed;
  1275. X   while(*q == 'Z') *q++ = 'A';
  1276. X   ++*q;
  1277. X
  1278. X   if(*mktemp(p) == '\0') return(NULL);
  1279. X   return(p);
  1280. }
  1281. X
  1282. X
  1283. X
  1284. static char *
  1285. cpdir(buf, str)
  1286. char *buf;
  1287. char *str;
  1288. {
  1289. X   char *p;
  1290. X
  1291. X   if(str != NULL)
  1292. X   {
  1293. X      (void) strcpy(buf, str);
  1294. X      p = buf - 1 + strlen(buf);
  1295. X      if(*p == '/') *p = '\0';
  1296. X   }
  1297. X
  1298. X   return(buf);
  1299. }
  1300. SHAR_EOF
  1301. chmod 0640 dmake/tos/tempnam.c ||
  1302. echo 'restore of dmake/tos/tempnam.c failed'
  1303. Wc_c="`wc -c < 'dmake/tos/tempnam.c'`"
  1304. test 1506 -eq "$Wc_c" ||
  1305.     echo 'dmake/tos/tempnam.c: original size 1506, current size' "$Wc_c"
  1306. rm -f _shar_wnt_.tmp
  1307. fi
  1308. # ============= dmake/unix/386ix/ar.h ==============
  1309. if test ! -d 'dmake/unix'; then
  1310.     mkdir 'dmake/unix'
  1311. fi
  1312. if test ! -d 'dmake/unix/386ix'; then
  1313.     mkdir 'dmake/unix/386ix'
  1314. fi
  1315. if test -f 'dmake/unix/386ix/ar.h' -a X"$1" != X"-c"; then
  1316.     echo 'x - skipping dmake/unix/386ix/ar.h (File already exists)'
  1317.     rm -f _shar_wnt_.tmp
  1318. else
  1319. > _shar_wnt_.tmp
  1320. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/386ix/ar.h' &&
  1321. #define PORTAR 1
  1322. #include "/usr/include/ar.h"
  1323. SHAR_EOF
  1324. chmod 0640 dmake/unix/386ix/ar.h ||
  1325. echo 'restore of dmake/unix/386ix/ar.h failed'
  1326. Wc_c="`wc -c < 'dmake/unix/386ix/ar.h'`"
  1327. test 46 -eq "$Wc_c" ||
  1328.     echo 'dmake/unix/386ix/ar.h: original size 46, current size' "$Wc_c"
  1329. rm -f _shar_wnt_.tmp
  1330. fi
  1331. # ============= dmake/unix/386ix/config.h ==============
  1332. if test -f 'dmake/unix/386ix/config.h' -a X"$1" != X"-c"; then
  1333.     echo 'x - skipping dmake/unix/386ix/config.h (File already exists)'
  1334.     rm -f _shar_wnt_.tmp
  1335. else
  1336. > _shar_wnt_.tmp
  1337. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/386ix/config.h' &&
  1338. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/unix/386ix/config.h,v 1.1 1992/01/24 03:28:02 dvadura Exp $
  1339. -- SYNOPSIS -- Configurarion include file.
  1340. -- 
  1341. -- DESCRIPTION
  1342. --     There is one of these for each specific machine configuration.
  1343. --    It can be used to further tweek the machine specific sources
  1344. --    so that they compile.
  1345. --
  1346. -- AUTHOR
  1347. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  1348. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  1349. --
  1350. -- COPYRIGHT
  1351. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  1352. -- 
  1353. --      This program is free software; you can redistribute it and/or
  1354. --      modify it under the terms of the GNU General Public License
  1355. --      (version 1), as published by the Free Software Foundation, and
  1356. --      found in the file 'LICENSE' included with this distribution.
  1357. -- 
  1358. --      This program is distributed in the hope that it will be useful,
  1359. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  1360. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1361. SHAR_EOF
  1362. true || echo 'restore of dmake/unix/386ix/config.h failed'
  1363. fi
  1364. echo 'End of part 33, continue with part 34'
  1365. echo 34 > _shar_seq_.tmp
  1366. exit 0
  1367. exit 0 # Just in case...
  1368.